package com.platform.modules.mall.activity.rule;

import com.platform.common.utils.JedisUtil;
import com.platform.modules.mall.entity.MallGoodsToActivityEntity;

import java.util.List;

/**
 * 轮询商品，使用redis缓存轮询到的数字，然后使用取模的方式获得轮到的商品
 * 注意：
 * 1.如何redis被清除，就会重头开始轮，如果严格要求商品轮询就不能使用
 */
public class PollingGoodsUtil extends RuleAbstract{

    private static final String KEY="PollingGoodsUtil_Index";
    private JedisUtil jedisUtil;
    private String activityId;

    public PollingGoodsUtil(List<MallGoodsToActivityEntity> list,JedisUtil jedisUtil,String activityId){
        super(list);
        this.activityId=activityId;
        this.jedisUtil=jedisUtil;
    }

    /**
     * 轮询获得商品,根据活动轮询
     * @return
     */
    @Override
    public MallGoodsToActivityEntity getEntity(){
        Long incr = jedisUtil.incr(KEY+this.activityId);
        long index =incr % entityList.size();
        MallGoodsToActivityEntity goods = entityList.get((int) index);
        return goods;
    }


}
